﻿using System;
using Castle.DynamicProxy;
using System.ServiceModel;
namespace Elf.ServiceModel.Interfaces
{
    public interface IWcfClientInvoker
    {
        /// <summary>
        /// Invokes the specified invocation.
        /// </summary>
        /// <typeparam name="TResult">The type of the result.</typeparam>
        /// <param name="invocation">The invocation.</param>
        /// <param name="channel">The channel.</param>
        /// <param name="numberOfRetries">The number of retries.</param>
        /// <param name="retryTimeout">The retry timeout.</param>
        /// <param name="parameters">The parameters.</param>
        /// <returns></returns>
        object Invoke(IInvocation invocation, ICommunicationObject channel, int numberOfRetries, int retryTimeout, object[] parameters);
    }
}
